Python 运算符 - 快速概览 & 示例

作者:Ruben Geert van den Berg,归档于 SPSS Python 基础

下表提供了一个 Python 运算符的快速概览。

本概览之后,是一些 Python 特有运算符的基本示例。

运算符(OPERATOR) 形式(LOOKS LIKE) 功能(FUNCTION) 示例(EXAMPLES)
赋值(Assigns value to object) = 将值赋给对象 myString = 'Ruben'
等于(Equal to) == 比较值是否相等 if myString == 'Chrissy':
不等于(Not equal to) != 比较值是否不相等 if myString != 'Ruben':
小于(Less than) < 比较值是否小于 if myAge < 30:
小于等于(Less than or equal to) <= 比较值是否小于等于 if myAge <= 30:
大于(Greater than) > 比较值是否大于 if myAge > 30:
大于等于(Greater than or equal to) >= 比较值是否大于等于 if myAge >= 30:
身份等于(Identity equal) is 检查对象是否具有相同的ID if myAge is None:
身份不等于(Identity not equal) is not 检查对象是否具有不同的ID if myAge is not None:
包含(In) in 检查对象是否包含其他对象 if 'a' in 'banana':
与(And) and 检查两个条件是否都为True if 'a' in 'banana' and 'c' in 'cherry':
或(Or) or 检查多个条件中是否至少有一个为True if 'a' in 'banana' or 'b' in 'cherry':
非(Not) not 检查条件是否为False if not 'c' in 'banana':
反斜杠(Backslash) \ 转义(特殊或普通)字符 print('new line starts\nhere')
井号(Hash) # 指示该行剩余部分为注释 #LOOP OVER VARIABLES STARTS HERE
方括号(Square brackets) [] 提取对象的一部分,例如子字符串;指示 Python 列表对象(Python list object) myString = 'Ruben'[0]
圆括号(Parentheses) () 组合条件;指示 Python 元组(Python tuple) if ('a' in 'banana' or 'b' in 'banana') and 'd' in 'cherry':
花括号(Curly brackets) {} Python 文本替换的占位符;指示 Python 字典对象(Python dict object) 'Just say {}!'.format('hello')
加号(Plus) + 将两个或多个数字相加;将元素添加到对象,例如字符串连接 fullName = 'Ruben' + ' van den Berg'
减号(Minus) - 数字相减 10 - 9
星号(Asterisk) * 数字相乘 10 * 9
斜杠(Slash) / 数字相除 10 / 2
双星号(Double asterisk) ** 数字的幂运算 2 ** 10
双斜杠(Double slash) // 数字的向下取整除法(Floor division) 3 // 2
百分号(Percent) % 数字的模运算(Modulus);字符串中的文本替换 3 % 2
加等于(Plus-is) += 将数字添加到现有数字;将元素添加到对象,例如字符串连接 cntr += 1

Python “小于” 运算符

关于 Python 的 <<=>>= 运算符的一个小提示是,它们也适用于字符串。在这种情况下,它们_大致_指的是这些字符串的字母顺序。

begin program python3.
print('a' < 'b') # True
print('a' > 'b') # False
end program.

更准确地说,上述运算符比较的是字符底层 Unicode 码位的大小。 这就是为什么大写字母总是小于它们的小写字母的原因。

begin program python3.
print('a' < 'A') ## False
print('a' > 'A') ## True
end program.

大多数(但不是全部)特殊字符在所有数字之前,数字在所有字母之前。

begin program python3.
print('#' < '5') # True
print('5' < 'Z') # True
end program.

Python “is” 运算符

在 Python 中,“is” 评估两个对象是否共享同一个 ID。 当比较 Python 对象时,我们通常比较它们的值是否相等。 然而,一个更严格的比较是它们的 ID 是否也相等。 下面的语法展示了一个快速示例。

***COMPARE STRING OBJECT WITH SAME VALUES, DIFFERENT IDS.
begin program python3.
myName = 'Ruben'
yourName = 'Rube'
yourName += 'n'
print(myName,yourName) # Ruben Ruben
print(myName == yourName) # True
print(id(myName),id(yourName)) # 51019032 51016008
print(myName is yourName) # False
end program.

如果两个对象具有相同的 ID,那么它们基本上只是同一个对象的不同名称。 在这种情况下,对其中一个的更改也会应用于另一个。

***CREATE 2 LIST OBJECTS WITH SIMILAR IDS.
begin program python3.
myList = [1,3,5]
yourList = myList
print(myList is yourList) # True
myList.append(7) # Applies to 'both' lists
print(myList,yourList) # [1, 3, 5, 7] [1, 3, 5, 7]
end program.
***CREATE 2 LIST OBJECTS WITH DIFFERENT IDS.
begin program python3.
myList = [1,3,5]
yourList = myList[:]
print(myList is yourList) # False
myList.append(7) # Applies only to myList
print(myList,yourList) # [1, 3, 5, 7] [1, 3, 5]
end program.

Python “in” 运算符

Python 的 “in” 运算符评估某个对象是否包含另一个对象。 基本示例包括:

***CHECK IF STRING CONTAINS SUBTRING.
begin program python3.
myFruit = 'banana'
print('an' in myFruit) # True
end program.
***CHECK IF LIST CONTAINS SUBTRING.
begin program python3.
myFruit = ['apple','banana','cherry']
print('apple' in myFruit) # True
end program.

请注意,对于 Python 字典(Python dict)对象,“in” 运算符有点棘手:它只检查某个对象是否在字典的 键(keys) 中,而不是它的值。

***"IN" ONLY INSPECTS DICT KEYS, NOT VALUES.
begin program python3.
myFruit = {'a':'apple','b':'banana','c':'cherry'}
print('a' in myFruit) # True
print('apple' in myFruit) # False
end program.
***USE "VALUES" METHOD FOR SEARCHING DICT VALUES.
begin program python3.
print('apple' in myFruit.values()) # True
end program.

Python 中的反斜杠

在 Python 中,反斜杠指示转义序列:两个字符的组合,其中第一个字符修改第二个字符的含义。 这在两个方向上都有效:

  • 反斜杠为“普通”字符赋予特殊含义
  • 反斜杠取消特殊字符的特殊含义。

第一种类型的一个常见示例是 \n,其中反斜杠将 n 的含义从简单的“n”更改为换行符。

begin program python3.
print('New line starts\nhere')
end program.

第二种类型的一个示例是 \',其中反斜杠将 '(字符串的开头)的特殊含义更改为简单的“’”。

begin program python3.
print('I don\'t know!') # I don't know!
end program.

为了在 Python 中指定路径(尤其是在使用 os 模块时),我们经常需要转义反斜杠本身。 我们可以通过使用两个反斜杠或通过将路径指定为原始字符串(在路径前加上 “r”)来实现。

***ESCAPE BACKSLASHES WITH BACKSLASHES.
begin program python3.
myPath = 'D:\\\SCRIPTS\\\NEW FOLDER'
print(myPath) # D:\SCRIPTS\NEW FOLDER
end program.
***ESCAPE BACKSLASHES BY RAW STRING.
begin program python3.
yourPath = r'D:\SCRIPTS\NEW FOLDER'
print(yourPath) # D:\SCRIPTS\NEW FOLDER
end program.

Python 中的方括号

在 Python 中,方括号要么

  • 从某个对象(例如子字符串)中提取一部分,要么
  • 指示一个 Python 列表对象(Python list object)。

下面的语法给出了一些从对象中提取元素的示例,此过程在 Python 中称为“切片(slicing)”。

***EXTRACT FIRST 5 CHARACTERS (=SUBSTRING) FROM STRING OBJECT.
begin program python3.
myName = 'Ruben Geert van den Berg'
print(myName[:5]) # Ruben
end program.
***EXTRACT LAST ELEMENT FROM TUPLE.
begin program python3.
myTuple = (1,3,5,7,9)
print(myTuple[-1]) # 9
end program.
***EXTRACT DICT VALUE FOR KEY = 'a'.
begin program python3.
myFruit = {'a':'apple','b':'banana','c':'cherry'}
print(myFruit['a']) # apple
end program.

零个或多个对象周围的方括号告诉您,这些对象组成一个 Python 列表对象。

***CREATE EMPTY LIST OBJECT WITH SQUARE BRACKETS.
begin program python3.
animals = []
print(type(animals)) # <class 'list'>
end program.
begin program python3.
print(animals) # [] tells you that animals is a list object
end program.

Python 中的圆括号

在 Python 中,圆括号要么

如下面的示例所示,对于使用 “and” 和 “or” 运算符组合三个或更多条件,最好_始终_使用圆括号。

***LAST CONDITION MUST BE TRUE.
begin program python3.
if ('a' in 'banana' or 'b' in 'banana') and 'd' in 'cherry':
print('Yes!')
else:
print('No!')
end program.
***FIRST CONDITION MUST BE TRUE.
begin program python3.
if 'a' in 'banana' or ('b' in 'banana' and 'd' in 'cherry'):
print('Yes!')
else:
print('No!')
end program.
***UNCLEAR HOW CONDITIONS COMBINE...
begin program python3.
if 'a' in 'banana' or 'b' in 'banana' and 'd' in 'cherry':
print('Yes!')
else:
print('No!')
end program.

Python 中的花括号

在 Python 中,花括号要么

我们将在 SPSS Python 文本替换教程(SPSS Python Text Replacement Tutorial) 中介绍文本替换的不同选项,但我们也会在下面添加一个最小示例。

***USE {} AS PLACEHOLDER FOR TEXT REPLACEMENT.
begin program python3.
myGreeting = 'hello'
print('Just say {}!'.format(myGreeting))
end program.

下面的示例演示了花括号也指示一个 Python 字典对象。

***USE {} TO INDICATE DICT OBJECT.
begin program python3.
myFruit = {'a':'apple','b':'banana','c':'cherry'}
print(myFruit) # {'c': 'cherry', 'b': 'banana', 'a': 'apple'}
print(type(myFruit)) # <class 'dict'>
end program.

Python 加号运算符

在 Python 中,加号运算符要么

  • 将两个或多个数字(例如 int 或 float 对象)相加,要么
  • 将一个或多个元素添加到对象。

下面的示例演示了数值加法。

***NUMERIC ADDITION FOR FLOAT AND INT OBJECTS.
begin program python3.
myInt = 5
myFloat = 1.23
print(myInt + myFloat) # 6.23
end program.

对于数字以外的对象(例如字符串或列表),加号运算符会将元素添加到它们。 如下所示,下面的示例演示了字符串对象的连接和将列表添加到另一个列表。

***PYTHON CONCATENATION WITH + OPERATOR.
begin program python3.
myDay = '23'
myMonth = 'February'
myYear = '2022'
myDate = myDay + ' ' + myMonth + ' ' + myYear
print(myDate) # 23 February 2022
end program.
***ADD LIST TO LIST WITH +. NOTE: USE += FOR CHANGING MYLIST.
begin program python3.
myList = [1,3,5]
print(myList + [7,9,11])
end program.
***ADD LIST TO LIST WITH EXTEND.
begin program python3.
myList = [1,3,5]
myList.extend([7,9,11])
print(myList)
end program.

Python 中的双星号

Python 中的双星号将某个数字提高到某个幂。

***PRINT 2 RAISED TO THE ZEROETH THROUGH 9TH POWER.
begin program python3.
for pow in range(10):
print(2 ** pow)
end program.

快速提示:您可以使用 myNumber**(1 / k) 之类的表达式来查找某个数字的 k 次方根,包括平方根。 与 Excel、Googlesheet 和 SPSS 相比,除非您导入 math 模块并使用 math.sqrt(),否则 sqrt() 在 Python 中不可用。

Python 中的双斜杠

Python 中的双斜杠用于向下取整除法:它将 x 除以 y 并截断结果。

***FLOOR DIVISION OF 10 BY 3.
begin program python3.
print(10 // 3) # 3
end program.

Python 中的百分号

在 Python 中,百分号要么用于

  • 数字的模函数(modulo function),要么
  • 字符串对象中用于文本替换的占位符。

首先,模(不要与 modul us 混淆)返回从 y 中减去 x 的最大次数后的余数。 如下所示,它可用于检查数字是奇数还是偶数。

***CHECK IF INTEGERS 0 THROUGH 9 ARE EVEN OR ODD NUMBERS.
begin program python3.
for myInt in range(10):
if (myInt % 2): # SHORTHAND FOR MODULO NOT ZERO
print('%s is an odd number.'%myInt)
else:
print('%s is an even number.'%myInt)
end program.

其次,百分号用作 Python 中文本替换的占位符。 准确地说,

  • %s 可以替换为字符串值,
  • %d 可以替换为整数,并且
  • %f 可以替换为浮点数。

请注意,与使用 .format()花括号 相比,这些占位符在某种程度上已被弃用。 下面的语法显示了这两种方法的最小示例。

***TEXT REPLACEMENTS WITH % PLACEHOLDERS.
begin program python3.
name = 'Alexander'
age = 43
print('%s is %d years old.'%(name,age)) # Alexander is 43 years old.
end program.
***TEXT REPLACEMENTS WITH {} PLACEHOLDERS.
begin program python3.
name = 'Alexander'
age = 43
print('{} is {} years old.'.format(name,age)) # Alexander is 43 years old.
end program.

Python 加等于运算符

在 Python 中,加等于运算符用于

  • 将一个数字添加到另一个数字,或
  • 将一个元素添加到某个其他对象。

在任何一种情况下,a += b 都只是 a = a + b 的简写形式。 下面的语法给出了数字对象的快速示例。

***ADD 3 TO MYINTO VIA PLUS OPERATOR.
begin program python3.
myInt = 5
myInt = myInt + 3
print(myInt) # 8
end program.
***ADD 3 TO MYINTO VIA PLUS-IS OPERATOR.
begin program python3.
myInt = 5
myInt += 3
print(myInt) # 8
end program.

除了数值加法之外,+= 运算符还可以用于连接字符串或将元素添加到 Python 列表对象。 在后一种情况下,它充当 .extend 而不是 .append,如下所示。

***CONCATENATE TO STRING WITH += OPERATOR.
begin program python3.
myVars = ''
for ind in range(10):
myVars += 'v%s '%ind
print(myVars) # ['v0', 'v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9']
end program.
***FOR LIST, += OPERATOR IS SIMILAR TO EXTEND (NOT APPEND).
begin program python3.
myVars = []
for ind in range(10):
myVars += ['v' + str(ind)]
print(myVars) # v0 v1 v2 v3 v4 v5 v6 v7 v8 v9
end program.